// 签到工具类
// 使用Vuex store中已保存的用户信息进行签到

/**
 * 执行签到操作
 * @param {Object} store - Vuex store实例
 * @param {Object} signData - 签到相关数据
 * @param {string} signData.tid - 培训ID
 * @param {string} signData.teachName - 培训名称
 * @param {string} signData.number - 培训编号
 * @param {number} signData.sign - 签到状态 (0:未签到, 1:已签到, 2:已签退)
 * @param {string} signData.id - 签到记录ID（可选，更新时传入）
 * @returns {Promise} 签到结果
 */
export async function performSign(store, signData) {
    try {
        // 从store中获取已保存的用户信息
        const userInfo = store.getters.userInfo;
        
        console.log('📝 开始签到，用户信息:', userInfo);
        
        // 构建签到请求数据，包含性别和岗位信息
        const signRequestData = {
            userid: userInfo.userid,
            name: userInfo.empname || userInfo.nickname,
            tid: signData.tid,
            teach_name: signData.teachName,
            number: signData.number,
            sign: signData.sign,
            // 🔧 关键：传递已保存的性别和岗位信息
            sex: userInfo.sex,
            empptypename: userInfo.emptype
        };
        
        // 如果有签到记录ID，添加到请求中
        if (signData.id && signData.id !== 'null') {
            signRequestData.id = signData.id;
        }
        
        console.log('📤 签到请求数据:', signRequestData);
        
        // 调用签到接口
        const apiUrl = store.getters.getApiUrl('v2');
        const response = await uni.request({
            url: `${apiUrl}/sign`,
            method: 'POST',
            data: signRequestData
        });
        
        console.log('📥 签到响应:', response.data);
        
        if (response.data && response.data.status === 1) {
            console.log('✅ 签到成功');
            return {
                success: true,
                message: '签到成功',
                data: response.data.data
            };
        } else {
            const errorMsg = response.data?.message || '签到失败';
            console.error('❌ 签到失败:', errorMsg);
            return {
                success: false,
                message: errorMsg
            };
        }
        
    } catch (error) {
        console.error('❌ 签到请求异常:', error);
        return {
            success: false,
            message: '网络错误，请重试'
        };
    }
}

/**
 * 新版签到接口（使用场次ID）
 * @param {Object} store - Vuex store实例
 * @param {Object} signData - 签到数据
 * @param {number} signData.teachId - 培训ID
 * @param {number} signData.sessionId - 场次ID
 * @returns {Promise} 签到结果
 */
export async function performSessionSign(store, signData) {
    try {
        // 从store中获取已保存的用户信息
        const userInfo = store.getters.userInfo;
        
        console.log('📝 开始场次签到，用户信息:', userInfo);
        
        // 构建新版签到请求数据
        const signRequestData = {
            teach_id: signData.teachId,
            session_id: signData.sessionId,
            userid: userInfo.userid,
            name: userInfo.empname || userInfo.nickname,
            // 🔧 关键：传递已保存的性别和岗位信息
            sex: userInfo.sex,
            empptypename: userInfo.emptype
        };
        
        console.log('📤 场次签到请求数据:', signRequestData);
        
        // 调用新版签到接口
        const apiUrl = store.getters.getApiUrl('v2');
        const response = await uni.request({
            url: `${apiUrl}/signin`,
            method: 'POST',
            data: signRequestData
        });
        
        console.log('📥 场次签到响应:', response.data);
        
        if (response.data && response.data.code === 0) {
            console.log('✅ 场次签到成功');
            return {
                success: true,
                message: '签到成功',
                data: response.data.data
            };
        } else {
            const errorMsg = response.data?.message || '签到失败';
            console.error('❌ 场次签到失败:', errorMsg);
            return {
                success: false,
                message: errorMsg
            };
        }
        
    } catch (error) {
        console.error('❌ 场次签到请求异常:', error);
        return {
            success: false,
            message: '网络错误，请重试'
        };
    }
}

/**
 * 获取用户签到信息摘要
 * @param {Object} store - Vuex store实例
 * @returns {Object} 用户信息摘要
 */
export function getUserSignInfo(store) {
    const userInfo = store.getters.userInfo;
    
    return {
        userid: userInfo.userid,
        name: userInfo.empname || userInfo.nickname,
        sex: userInfo.sex,
        emptype: userInfo.emptype,
        orgname: userInfo.orgname
    };
}
